// m

// 给定一个字符串，使其能换成一个32位有符号整数，需要检测有效性，无法读取返回0

// 解题思路
// 1. 先去除前后空格
// 2. 检测正负号
// 3. 读入数字，并用字符串存储数字结果
// 4. 将数字字符转为整数，并根据正负号转换整数结果
// 5. 判断整数范围，并返回最终结果

function myAtoi(s) {
    let num_str = ''
    let positive = true
    let start = 0
    s = s.trim()

    if (!s) {
        return 0
    }

    if (s[0] === '-') {
        positive = false
        start = 1
    } else if (s[0] === '+') {
        positive = true
        start = 1
    } else if (!/\d/.test(s[0])) {
        return 0
    }

    for (let i = start; i < s.length; i++) {
        if (/\d/.test(s[i])) {
            num_str += s[i]
        } else {
            break
        }
    }
    if (!num_str) {
        return 0
    }
    let num = Number(num_str)
    if (!positive) {
        num = -num
        return Math.max(num, Math.pow(-2, 31))
    } else {
        return Math.min(num, Math.pow(2, 31) - 1)
    }
}

let s = "4193 with words"
console.log(myAtoi(s))